package com.ww.learn.extenfun

class Host(val hostname: String) {
    fun printHostname() {
        print(hostname)
    }
}

class Connection(val host: Host, val port: Int) {
    fun printPort() {
        print(port)
    }

    /**
     * 扩展声明所在的类的实例成为分发接收者
     * 扩展方法调用所在的接收者类型的实例成为扩展接收者
     */
    fun Host.printConnectionString() {
        printHostname()
        print(":")
        printPort()
    }

    fun connect() {
        host.printConnectionString() // 访问扩展函数
    }
}

fun main() {
    Connection(Host("kotlinlang.org"), 443).connect()
}